home *** CD-ROM | disk | FTP | other *** search
/ IRIX Installation Tools & Overlays 2002 May / SGI IRIX Installation Tools & Overlays 2002 May - Disc 3.iso / relnotes / compiler_eoe / ch1.z / ch1
Text File  |  2002-04-11  |  48KB  |  1,254 lines

  1.  
  2.  
  3.  
  4.                                                - 1 -
  5.  
  6.  
  7.  
  8.                     7.3.1.3m Base Compiler Execution Environment Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                - 2 -
  69.  
  70.  
  71.  
  72.                     1.  _B_a_s_e__C_o_m_p_i_l_e_r__E_x_e_c_u_t_i_o_n__E_n_v_i_r_o_n_m_e_n_t
  73.  
  74.                     These release notes describe the MIPspro 7.3
  75.                     release and its maintenance update 7.3.1.3m of
  76.                     Silicon Graphics(TM) IRIX(TM) compiler execution
  77.                     environment (EOE) (compiler_eoe).  The IRIX
  78.                     compiler EOE contains compiler execution
  79.                     utilites such as rld and base compiler run-time
  80.                     libraries supplied as DSOs (dynamic shared
  81.                     objects).  DSOs are discussed in the dso(5) man
  82.                     page.  The IRIX compiler EOE supports MIPSpro
  83.                     compilers in either 64-bit, 32-bit, or high
  84.                     performance 32-bit (n32) compilation modes.  For
  85.                     more information about 64-bit and high
  86.                     performance 32-bit interfaces, see the _M_I_P_S_p_r_o
  87.                     _6_4-_b_i_t _P_o_r_t_i_n_g _a_n_d _T_r_a_n_s_i_t_i_o_n _G_u_i_d_e and the
  88.                     _M_I_P_S_p_r_o _N_3_2 _A_B_I _H_a_n_d_b_o_o_k.
  89.  
  90.                     If you plan to run any IRIX applications, it is
  91.                     important to note that you must install the IRIX
  92.                     compiler EOE.  This environment is included in
  93.                     the MIPSpro 7.3 Compiler Execution Environment
  94.                     for IRIX 6.5._x CD (also known as the Compiler
  95.                     EOE CD) and in the IDF CD for IRIX 6.2, 6.3, and
  96.                     6.4 systems.
  97.  
  98.                     Packaged with this software is a separate
  99.                     Software License Agreement.  This software is
  100.                     provided to you solely under the terms and
  101.                     conditions of the Software License Agreement.
  102.                     Please take a few moments to review this
  103.                     agreement.
  104.  
  105.  
  106.  
  107.                     1.1  _R_e_l_e_a_s_e__I_d_e_n_t_i_f_i_c_a_t_i_o_n__I_n_f_o_r_m_a_t_i_o_n
  108.  
  109.                     Following is the release identification
  110.                     information for the IRIX compiler EOE
  111.                     (compiler_eoe):
  112.  
  113.                     Software product              IRIX compiler EOE
  114.  
  115.                     Release                       7.3.1.3m
  116.  
  117.                     Product code                  IDEVFNT-1.2
  118.  
  119.                     System software requirements  IRIX 6.5 or higher
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                                                - 3 -
  135.  
  136.  
  137.  
  138.                     1.2  _O_n_l_i_n_e__R_e_l_e_a_s_e__N_o_t_e_s
  139.  
  140.                     After you install the online documentation for a
  141.                     product (the relnotes subsystem), you can view
  142.                     the release notes on your screen.
  143.  
  144.                     If you have a graphics system, select Release
  145.                     Notes from the Help submenu of the Toolchest.
  146.                     This displays the grelnotes(1) graphical browser
  147.                     for the online release notes.  For information
  148.                     on options to this command, refer to the
  149.                     grelnotes(1) man page.
  150.  
  151.                     If you do not have a graphics system, you can
  152.                     use the relnotes command.  For information on
  153.                     accessing the online release notes using this
  154.                     command, refer to the relnotes(1) man page.
  155.  
  156.  
  157.                     1.3  _P_r_o_d_u_c_t__S_u_p_p_o_r_t
  158.  
  159.                     Silicon Graphics provides a comprehensive
  160.                     product support maintenance program for its
  161.                     products.
  162.  
  163.                     If you are in the United States or Canada and
  164.                     would like support for your Silicon Graphics
  165.                     supported products, contact the Customer Support
  166.                     Center at 1-800-800-4SGI.
  167.  
  168.                     If you are outside the United States or Canada,
  169.                     contact the Silicon Graphics subsidiary or
  170.                     authorized distributor in your country.
  171.  
  172.  
  173.  
  174.                     1.4  _I_n_s_t_a_l_l_a_t_i_o_n__I_n_f_o_r_m_a_t_i_o_n
  175.  
  176.                     If you are installing this option for the first
  177.                     time, to install the subsystems marked default,
  178.                     use the go menu item.  To install a different
  179.                     set of subsystems, use the following commands in
  180.                     inst to customize the list of subsystems to be
  181.                     installed:
  182.  
  183.                        +o install
  184.  
  185.                        +o remove
  186.  
  187.                        +o keep
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                - 4 -
  201.  
  202.  
  203.  
  204.                        +o step
  205.  
  206.                     Then select the go menu item.
  207.  
  208.  
  209.                     1.5  _S_u_b_s_y_s_t_e_m_s
  210.  
  211.                     The IRIX compiler EOE software (compiler_eoe)
  212.                     for MIPSpro 7.3 includes the following
  213.                     subsystems:
  214.  
  215.                     compiler_eoe.man.relnotes  IRIX compiler
  216.                                                execution environment
  217.                                                release notes
  218.                                                (default)
  219.  
  220.                     compiler_eoe.man.dso       IRIX DSO man page
  221.                                                (default)
  222.  
  223.                     compiler_eoe.man.unix      IRIX standard man
  224.                                                pages (default)
  225.  
  226.                     compiler_eoe.sw.cpp        Source code
  227.                                                preprocessor
  228.                                                (default)
  229.  
  230.                     compiler_eoe.sw.lboot      Kernel lboot software
  231.                                                (default)
  232.  
  233.                     compiler_eoe.sw.lib        Base compilers
  234.                                                execution libraries
  235.                                                (default)
  236.  
  237.                     compiler_eoe.sw.unix       IRIX execution
  238.                                                environment
  239.                                                (compiler) (default)
  240.  
  241.                     compiler_eoe.sw32.lib      Base compilers
  242.                                                execution libraries
  243.                                                (n32) (IRIX 6.2 only)
  244.                                                (default)
  245.  
  246.                     compiler_eoe.sw32.unix     IRIX execution
  247.                                                environment ( n32
  248.                                                compiler) (IRIX 6.2
  249.                                                only) (default)
  250.  
  251.                     compiler_eoe.sw64.lib      Base compilers
  252.                                                execution libraries
  253.                                                (64-bit) (default on
  254.                                                R8000(TM) and
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                - 5 -
  267.  
  268.  
  269.  
  270.                                                R10000(TM) systems
  271.                                                only)
  272.  
  273.                     compiler_eoe.sw64.unix     IRIX execution
  274.                                                environment ( 64-bit
  275.                                                compiler) (default on
  276.                                                R8000 and R10000
  277.                                                systems only)
  278.  
  279.  
  280.                     1.6  _P_a_t_c_h_e_s
  281.  
  282.                     The following patches are included with the
  283.                     compiler_eoe environment on IRIX 6.2, 6.3, and
  284.                     6.4:
  285.  
  286.                     patchSG0003598      Provides updates to the base
  287.                                         compiler libraries
  288.  
  289.                     patchSG0003596      Provides updates to libmp.so
  290.                                         to enable OpenMP(TM) support
  291.                                         for C and C++
  292.  
  293.  
  294.                     1.7  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._3_m_
  295.  
  296.                     770106   The file
  297.                              /usr/relnotes/compiler_eoe/chA.z has
  298.                              size 0. This has been fixed.
  299.  
  300.                     777196   Gaussian problem with policy module
  301.                              table.
  302.  
  303.                              A customer running Gaussian98 on IRIX
  304.                              6.5.x reports a problem with MLD
  305.                              creation. The error returned is:
  306.  
  307.                                Could not create MLD: Not enough space
  308.  
  309.                              This has been fixed.
  310.  
  311.                     804796   libmp coredumps with OMP_NUM_THREADS ==
  312.                              256.  This has been fixed.
  313.  
  314.  
  315.                     822823   F90: acos returns NaN.
  316.  
  317.                              The program below prints NaN instead of
  318.                              pi for the variable z. This was first
  319.                              observed with the Fortan 90 MIPSpro
  320.                              7.3.1.2 compiler.  This occured when
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                - 6 -
  333.  
  334.  
  335.  
  336.                              the program was compiled -n32 and -64.
  337.                              If variables a and b are declared
  338.                              real*16, then variable z is correct.
  339.  
  340.                                program test
  341.                                      real*8 a,b
  342.                                      real*16 x,y,z
  343.                                      a = 4.
  344.                                      b = 1.
  345.                                      x = a * atan(b)
  346.                                      y = cos(x)
  347.                                      z = acos(y)
  348.                                      print *, x, y, z
  349.                                end program test
  350.  
  351.                              This has been fixed.
  352.  
  353.                     821769   Significant performance loss running
  354.                              ADA apps in 6.5.10.  This has been
  355.                              fixed.
  356.  
  357.  
  358.                     834590   The .dynamic section of the a.out now
  359.                              has entries for the timestamp and
  360.                              checksum. This allows downstream tools
  361.                              such as SpeedShop to determine if data
  362.                              files match the executable or not. This
  363.                              information has always been in dsos.
  364.  
  365.                              Warning: a recompiled a.out will now
  366.                              always have different bits.
  367.  
  368.  
  369.                     819091   The linker generates some text on it's
  370.                              own such as the init and fini function
  371.                              driver. Up to now the linker neglected
  372.                              to generate debugging information along
  373.                              with this text making unwinding in the
  374.                              debugger and exception handling
  375.                              routines problematic. This has been
  376.                              fixed.
  377.  
  378.                              There are still problems with unwinding
  379.                              through linker generated code that has
  380.                              been instrumented for performance
  381.                              evaluation. This will be addressed
  382.                              later.
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                - 7 -
  399.  
  400.  
  401.  
  402.                     1.8  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._2_m
  403.  
  404.                     778798   rld was broken for purify on pthread
  405.                              applications, and the purified
  406.                              pthreaded app could coredump.
  407.  
  408.                     783179   rqs/rqs32/rqs64 did not process the
  409.                              multigot dynamic section extensions of
  410.                              multigot executables or DSOs correctly
  411.                              (see man ld, man dso).  The error was
  412.                              harmless but could be distressing on a
  413.                              multigot executable (rqs could coredump
  414.                              processing netscape 4.72, for example,
  415.                              but the coredump would NOT harm
  416.                              netscape).  If rqs did not core dump on
  417.                              a  multigot shared library (DSO) it
  418.                              processed, rqs could corrupt the  DSO
  419.                              (if and only if rqs was attempting to
  420.                              'move' the DSO to a new address and
  421.                              terminated normally:  if rqs coredumped
  422.                              then the DSO it was processing is
  423.                              safe).  There are very few multigot
  424.                              DSOs: /usr/lib64/libInventor.so.3 is
  425.                              one such.  Once damaged, a DSO is not
  426.                              repairable, but must be reinstalled.
  427.                              [If "elfdump -L myfile | grep AUX_DYN"
  428.                              shows a line or more of output then
  429.                              <myfile> is multigot.]
  430.  
  431.                     770775   n32, 64 libexc.so The
  432.                              trace_back_stack()  and/or exc_unwind()
  433.                              functions could get mixed up and not
  434.                              trace back successfully in programs
  435.                              using pthreads.  Now fixed.
  436.  
  437.                     770782   n32, 64 libexc.so The  exc_unwind()
  438.                              function was not setting sigcontext pc
  439.                              to 0 always.  A prudent application
  440.                              will also check for  a sigcontext pc <
  441.                              4 and stop, though the library bug is
  442.                              fixed.
  443.  
  444.                     770785   n32, 64 libexc.so The  exc_unwind()
  445.                              function was not unwinding past
  446.                              sigtramp(). Fixed.
  447.  
  448.                     761433   n32, 64 libexc.so If dbx or WorkShop
  449.                              had set a frame_exit_trap in a routine
  450.                              on the stack, functions such as
  451.                              trace_back_stack() did not work
  452.                              correctly because of the details of the
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                                - 8 -
  465.  
  466.  
  467.  
  468.                              implementation of dbx/WorkShop frame
  469.                              exit traps.  Fixed libexc.so to deal
  470.                              with this situation so the traceback
  471.                              works.
  472.  
  473.                     792734   o32 libexc.so The floating point
  474.                              registers were being picked up
  475.                              incorrectly from memory when libexc
  476.                              unwound the stack.  libexc was not
  477.                              reflecting the o32 ABI register save
  478.                              rules during the restoration.  Now this
  479.                              works correctly.
  480.  
  481.                     673119   rld -ignore_version did not work when
  482.                              -delay_load was used in earlier 7.3
  483.                              releases.  Fixed.
  484.  
  485.                     678896   _RLDN32_LIST processing could be wrong
  486.                              if  "" was used as the environment
  487.                              variable value to turn off _RLDN32_LIST
  488.                              when _RLD_LIST was set for o32.  Fixed.
  489.  
  490.                     780001   32-bit Log function returns incorrect
  491.                              results. This has been fixed.
  492.  
  493.                     801546   Mips4 version of libfastm gives
  494.                              incorrect results on R5000.
  495.  
  496.  
  497.  
  498.  
  499.                     1.9  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._1_m__(_a_n_d__7_._3_._1_m_)
  500.  
  501.  
  502.                     The MIPSpro 7.3 Compiler Execution Environment
  503.                     for IRIX 6.5.x consisted of runtime libraries
  504.                     that contained daddiu instructions that could
  505.                     encounter an arithmetic overflow under certain
  506.                     circumstances.  An errata in revision 4 or
  507.                     earlier of MIPS R4000 and R4400 would cause
  508.                     incorrect answers to be produced when
  509.                     encountering arithmetic overflows in executing
  510.                     the daddiu instruction.
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                                                - 9 -
  531.  
  532.  
  533.  
  534.  
  535.                     To see what processors are on your system,
  536.                     use the hinv command:
  537.  
  538.                     Example:
  539.  
  540.                     % hinv
  541.                     Processor 12: 100 MHZ IP19
  542.                     CPU: MIPS R4400 Processor Chip Revision: 4.0
  543.                     FPU: MIPS R4000 Floating Point Coprocessor Revision: 0.0
  544.  
  545.                     In the example, the Revision 4.0 processor does have the
  546.                     daddiu instruction errata.
  547.  
  548.  
  549.                     Although no demonstrable bugs have been found in
  550.                     the base compiler runtime libraries, they also
  551.                     have been recompiled, so as not to use the
  552.                     daddiu instruction in cases where arithmetic
  553.                     overflow can happen.
  554.  
  555.  
  556.  
  557.  
  558.                     1.10  _B_u_g_f_i_x_e_s__i_n__7_._3
  559.  
  560.                     The following sections describe bugs that have
  561.                     been fixed since the MIPSpro 7.2.1 release.
  562.  
  563.  
  564.                     1.10.1  _B_u_g_s__F_i_x_e_d__i_n__l_i_b_m
  565.  
  566.                     The following libm bugfixes have been applied
  567.                     from patchSG0003131 into compiler_eoe 7.2.1.1m
  568.                     for IRIX 6.5.1m:
  569.  
  570.                     591738, 594226, 595879     Under certain inputs,
  571.                                                sin() returns wrong
  572.                                                results on systems
  573.                                                running on the
  574.                                                R5000(TM) CPU.
  575.  
  576.  
  577.  
  578.                     1.10.2  _B_u_g_s__F_i_x_e_d__i_n__l_i_b_m_p
  579.  
  580.                     The following libmp bugfixes have been made in
  581.                     compiler_eoe 7.2.1.3m/f for IRIX 6.5.3m/f:
  582.  
  583.                     658799                     libmp.so is not cpr
  584.                                                compliant in IRIX
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                                - 10 -
  597.  
  598.  
  599.  
  600.                                                versions 6.5.[2,3].
  601.  
  602.                     638713                     Various routines
  603.                                                invoke mp_numthreads,
  604.                                                disabling dynamic
  605.                                                threads in IRIX 6.5.
  606.  
  607.                     657207                     Cannot change number
  608.                                                of threads between
  609.                                                parallel regions with
  610.                                                version 7.3
  611.                                                compilers.
  612.  
  613.                     The following libmp bugfixes have been made in
  614.                     compiler_eoe 7.2.1.2m/f for IRIX 6.5.2m/f:
  615.  
  616.                     554156                     Use of the
  617.                                                environment variable
  618.                                                MP_SLAVE_STACKSIZE
  619.                                                leads to
  620.                                                unpredictable
  621.                                                results.
  622.  
  623.                     560707                     Fortran MP programs
  624.                                                (sproc) with
  625.                                                unlimited stack sizes
  626.                                                fail.
  627.  
  628.                     587240                     A performance
  629.                                                degradation occurs
  630.                                                when OMP_DYNAMIC is
  631.                                                set and the program
  632.                                                is run under Miser.
  633.  
  634.                     599609                     libmp MLD information
  635.                                                is incorrect on 128
  636.                                                CPUs.
  637.  
  638.                     610654                     In OpenMP, a barrier
  639.                                                within the dynamic
  640.                                                extent of a parallel
  641.                                                do receives a
  642.                                                misleading error
  643.                                                message at run time.
  644.                                                In particular, a
  645.                                                barrier is a
  646.                                                synchronization
  647.                                                construct, not a
  648.                                                worksharing
  649.                                                construct.
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.                                                - 11 -
  663.  
  664.  
  665.  
  666.                     587240                     When using the
  667.                                                _DSM_MUSTRUN flag and
  668.                                                a node has only one
  669.                                                CPU and a process
  670.                                                gets scheduled to run
  671.                                                on that node, libmp
  672.                                                attempts to place a
  673.                                                process on a non-
  674.                                                existent processor.
  675.  
  676.                     The following libmp bugfixes have been applied
  677.                     from patchSG0003139 into compiler_eoe 7.2.1.1m
  678.                     for IRIX 6.5.1m:
  679.  
  680.                     581775                     The OpenMP directive,
  681.                                                schedule(static,ichunk),
  682.                                                ignores ichunk.
  683.  
  684.                     581835                     The OpenMP directive,
  685.                                                ORDERED
  686.                                                schedule(dynamic,ichunk),
  687.                                                deadlocks if ichunk
  688.                                                is not equal to
  689.                                                n/nprocs.
  690.  
  691.                     590252                     Program with the
  692.                                                OpenMP ORDERED
  693.                                                directive deadlocks
  694.                                                under some
  695.                                                conditions.
  696.  
  697.  
  698.                     1.10.3  _B_u_g_s__F_i_x_e_d__f_o_r__r_l_d__a_n_d__r_q_s  The
  699.                     following rld and rqs bugs have been fixed since
  700.                     the 7.2.1.2m release of compiler_eoe for IRIX
  701.                     6.5.2m:
  702.  
  703.                     608296, 641687, 641192     Various performance
  704.                                                improvements have
  705.                                                reduced CPU time
  706.                                                spent in rld (in
  707.                                                small ways).
  708.  
  709.                     426852                     By default, rld no
  710.                                                longer reevaluates
  711.                                                name bindings on
  712.                                                dlclose().  (The
  713.                                                _RLD_ARGS -f argument
  714.                                                also uses this new
  715.                                                default behavior).
  716.                                                This fix makes
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                                                - 12 -
  729.  
  730.  
  731.  
  732.                                                dlclose() fast and
  733.                                                eliminates many
  734.                                                lazy-text-resolves.
  735.                                                It also affects the
  736.                                                operation of programs
  737.                                                that rely on names
  738.                                                being rebound to a
  739.                                                different
  740.                                                function/data item
  741.                                                after a dlclose().
  742.                                                Such programs are
  743.                                                erroneous.  If the -s
  744.                                                option is present
  745.                                                with _RLD_ARGS, the
  746.                                                old slow method of
  747.                                                dlclose is used (this
  748.                                                is provided for
  749.                                                erroneous programs
  750.                                                that depend on the
  751.                                                old method).  Details
  752.                                                are as follows:
  753.  
  754.                                                Each name SHOULD be
  755.                                                bound only once by
  756.                                                rld, but in
  757.                                                complicated
  758.                                                circumstances, names
  759.                                                can be rebound.  If
  760.                                                the result of
  761.                                                application actions
  762.                                                (like dlclose()) is
  763.                                                that the rebinding
  764.                                                finds a different
  765.                                                external definition,
  766.                                                the result can be
  767.                                                application problems
  768.                                                or an application
  769.                                                crash (rld does not
  770.                                                realize this has
  771.                                                happened and will not
  772.                                                give a warning).  (In
  773.                                                addition, having a
  774.                                                weak name defined in
  775.                                                one DSO and a strong
  776.                                                version in a DSO
  777.                                                loaded later leads to
  778.                                                'undefined name
  779.                                                bindings' and
  780.                                                potentially
  781.                                                inconsistent
  782.                                                application behavior.
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.                                                - 13 -
  795.  
  796.  
  797.  
  798.                                                This has always been
  799.                                                true but not
  800.                                                mentioned earlier.
  801.  
  802.                     644389                     If an application did
  803.                                                an sgidladd() or
  804.                                                dlopen(...RTLD_GLOBAL),
  805.                                                followed by a
  806.                                                dlopen(...RTLD_LOCAL)
  807.                                                (and the call to
  808.                                                sgidladd/dlopen(...RTLD_GLOBAL)
  809.                                                was itself done from
  810.                                                a DSO that was opened
  811.                                                or added by a dlopen
  812.                                                or dladd command),
  813.                                                name lookups by rld
  814.                                                might not find names
  815.                                                made global by the
  816.                                                sgidladd() or
  817.                                                dlopen(...RTLD_GLOBAL).
  818.                                                This was a bug
  819.                                                introduced in patch
  820.                                                3378.
  821.  
  822.                     638915                     If a DSO or
  823.                                                executable file had
  824.                                                more than 4096
  825.                                                conflict symbols, rqs
  826.                                                could core dump.  Now
  827.                                                the hash table
  828.                                                definition allows up
  829.                                                to 262,000+ conflict
  830.                                                symbols. Although
  831.                                                this is the maximum
  832.                                                size allowed, if a
  833.                                                smaller number will
  834.                                                work, a smaller
  835.                                                number is used.
  836.  
  837.                     649041                     If a lazy-text-
  838.                                                resolution call
  839.                                                involved floating
  840.                                                point argument
  841.                                                registers and if a
  842.                                                call in the -init
  843.                                                code in the DSO
  844.                                                loaded involved
  845.                                                floating point
  846.                                                registers, the lazy-
  847.                                                text call fp argument
  848.                                                registers would be
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.                                                - 14 -
  861.  
  862.  
  863.  
  864.                                                destroyed by the
  865.                                                -init arguments.  Due
  866.                                                to details of
  867.                                                argument register
  868.                                                passing, this bug is
  869.                                                seen most readily
  870.                                                with the n32/64 ABIs,
  871.                                                though it can be
  872.                                                reproduced in any of
  873.                                                the ABIs.
  874.  
  875.                     651001                     On delay-loads of
  876.                                                DSOs, versions have
  877.                                                been ignored for
  878.                                                almost all earlier
  879.                                                releases of rld.  Now
  880.                                                rld checks the
  881.                                                version number on
  882.                                                delay-loads too.  The
  883.                                                new _RLD_ARGS option
  884.                                                -idv turns off DSO
  885.                                                version checking for
  886.                                                delay-loads in rld
  887.                                                and rld.debug,
  888.                                                restoring the old,
  889.                                                broken behavior.
  890.  
  891.                     630359                     Debugger stack traces
  892.                                                through rld sometimes
  893.                                                stops in rld due to
  894.                                                mistakes in some
  895.                                                hand-written assembly
  896.                                                code in rld.  Now the
  897.                                                stack traces show the
  898.                                                callers back to
  899.                                                main(), as
  900.                                                appropriate.
  901.  
  902.                     629117                     rld now obeys the
  903.                                                general rule that
  904.                                                processing is
  905.                                                breadth-first
  906.                                                (loading of DSOs from
  907.                                                liblists and dlsym()
  908.                                                name resolution are
  909.                                                examples).  Details
  910.                                                are as follows:
  911.  
  912.                                                In the past, it did
  913.                                                almost-breadth-first
  914.                                                ordering.  Because
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.                                                - 15 -
  927.  
  928.  
  929.  
  930.                                                seeing an error in
  931.                                                ordering required
  932.                                                having duplicate
  933.                                                symbol definitions at
  934.                                                least 4 levels deep
  935.                                                in DSO nested
  936.                                                liblists, it is
  937.                                                unlikely this bug
  938.                                                affected any
  939.                                                application.  But the
  940.                                                ABIs have always been
  941.                                                clear and now rld
  942.                                                obeys the ABIs.
  943.  
  944.                     629128                     In the case of a
  945.                                                dlclose(), all -fini
  946.                                                execution is done for
  947.                                                a set of DSOs (where
  948.                                                this is the dlclose
  949.                                                of the last
  950.                                                reference) before any
  951.                                                are unmapped.
  952.  
  953.                     629707                     Nested
  954.                                                dlopen/sgidladd/delay-
  955.                                                load (that is,
  956.                                                invoking
  957.                                                dlopen/sgidladd/delay-
  958.                                                load from within the
  959.                                                -init or -fini code
  960.                                                of a
  961.                                                dlopen/sgidladd/delay-
  962.                                                load) now works even
  963.                                                in the pthreads and
  964.                                                sproc threads cases.
  965.                                                Nested
  966.                                                dlopen/sgidladd/delay-
  967.                                                load was always
  968.                                                problematic (though
  969.                                                if no pthreads or
  970.                                                sproc threads were in
  971.                                                use, it might have
  972.                                                appeared to work, as
  973.                                                long as none of the
  974.                                                nested
  975.                                                dlopen/sgidladd/delay-
  976.                                                load failed).
  977.  
  978.                                                Use nested
  979.                                                dlopen/sgidladd only
  980.                                                when absolutely
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.                                                - 16 -
  993.  
  994.  
  995.  
  996.                                                required.  Use -init
  997.                                                only when absolutely
  998.                                                required, as the
  999.                                                nested dependencies
  1000.                                                make static
  1001.                                                prediction of the
  1002.                                                ordering in which the
  1003.                                                -init code is to be
  1004.                                                run difficult.
  1005.  
  1006.                                                C++ global
  1007.                                                constructors ordering
  1008.                                                across compiliation
  1009.                                                units has always been
  1010.                                                unspecified by the
  1011.                                                C++ definition.
  1012.                                                Adding delay-load to
  1013.                                                the set of DSOs with
  1014.                                                mutual constructor
  1015.                                                calls makes the
  1016.                                                ordering even less
  1017.                                                predictable.  Using
  1018.                                                or setting
  1019.                                                sigprocmask(2) in
  1020.                                                -init or -fini code
  1021.                                                is not a good idea
  1022.                                                because the set of
  1023.                                                masks seen as ON is
  1024.                                                affected by rld.  The
  1025.                                                precise behavior of
  1026.                                                sigprocmask(2) in
  1027.                                                -init or -fini code
  1028.                                                depends on which of
  1029.                                                1) pthreads, 2) sproc
  1030.                                                threads, or 3)
  1031.                                                neither is in use.
  1032.                                                The details are not
  1033.                                                specified in these
  1034.                                                release notes; it is
  1035.                                                best to avoid setting
  1036.                                                or resetting the
  1037.                                                sigprocmask() in
  1038.                                                -init or -fini code.
  1039.                                                In addition, it is
  1040.                                                still difficult to
  1041.                                                debug -init code in
  1042.                                                the application
  1043.                                                startup.
  1044.  
  1045.                     634151                     If the filesystem of
  1046.                                                a DSO had no XFS
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.                                                - 17 -
  1059.  
  1060.  
  1061.  
  1062.                                                attributes, rqs could
  1063.                                                fail (refuse to
  1064.                                                update a DSO to allow
  1065.                                                quickstart) and fail
  1066.                                                to print the proper
  1067.                                                reason message.  (The
  1068.                                                system would operate
  1069.                                                properly in spite of
  1070.                                                this rqs error.)  Now
  1071.                                                rqs understands that
  1072.                                                ENOATTR is not really
  1073.                                                a failure, allowing
  1074.                                                the DSO to be
  1075.                                                quickstarted again,
  1076.                                                and uses strerror()
  1077.                                                to properly print all
  1078.                                                errno values when
  1079.                                                there is an error.
  1080.  
  1081.                     547873                     rld got delay load
  1082.                                                DSO visibility
  1083.                                                slightly wrong in
  1084.                                                MIPSpro 7.2.1.  Too
  1085.                                                restrictive in symbol
  1086.                                                visibility.
  1087.  
  1088.                     648641                     ssrun(1) could
  1089.                                                interact with rld,
  1090.                                                causing some -init
  1091.                                                functions to not run
  1092.                                                correctly. This fix
  1093.                                                corrects the rld
  1094.                                                part.
  1095.  
  1096.                                                Note: it is erroneous
  1097.                                                for a signal handler
  1098.                                                to call dlopen(),
  1099.                                                dlclose(),
  1100.                                                sgidladd(),
  1101.                                                sgidlopen_version(),
  1102.                                                dlsym(), or
  1103.                                                dlerror().
  1104.                                                Similarly, no
  1105.                                                function call in a
  1106.                                                signal handler is
  1107.                                                allowed to cause a
  1108.                                                delay-load of a DSO
  1109.                                                (this is an implicit
  1110.                                                dlopen and it is not
  1111.                                                correct).  In fact,
  1112.                                                very few functions
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.                                                - 18 -
  1125.  
  1126.  
  1127.  
  1128.                                                are legally callable
  1129.                                                from a signal
  1130.                                                handler. the dl*
  1131.                                                functions are not so
  1132.                                                callable.  It is up
  1133.                                                to  applications to
  1134.                                                ensure that such does
  1135.                                                not happen.
  1136.  
  1137.                     The following bugs have been fixed since the
  1138.                     7.2.1.1m release of compiler_eoe for IRIX
  1139.                     6.5.1m:
  1140.  
  1141.                     549912                     In rld there were
  1142.                                                potential deadlock
  1143.                                                and signal-mask
  1144.                                                handling problems.
  1145.  
  1146.  
  1147.                     554703                     rld needs to emit a
  1148.                                                better message in
  1149.                                                case of bad
  1150.                                                DSO/executable file.
  1151.  
  1152.  
  1153.                     558948                     In rld, there was an
  1154.                                                incorrrect
  1155.                                                implementation of
  1156.                                                add_version_to_name().
  1157.  
  1158.  
  1159.                     568510                     rqsall, under certain
  1160.                                                circumstances, falls
  1161.                                                into an infinite
  1162.                                                loop.
  1163.  
  1164.  
  1165.                     586353                     A call occurs to a
  1166.                                                function defined by
  1167.                                                rld at 0xffffffff.
  1168.  
  1169.  
  1170.                     589044                     An rld warning does
  1171.                                                not give the object
  1172.                                                name.
  1173.  
  1174.  
  1175.                     600777                     rld incorrectly
  1176.                                                performs an alloca()
  1177.                                                in a loop.
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.                                                - 19 -
  1191.  
  1192.  
  1193.  
  1194.                     604402                     An rqsall manpage
  1195.                                                example does not
  1196.                                                work.
  1197.  
  1198.  
  1199.                     608753                     The rld
  1200.                                                RHF_NO_LIBRARY_REPLACEMENT
  1201.                                                argument is not
  1202.                                                honored.
  1203.  
  1204.  
  1205.                     614133, 615089             rld is too large and
  1206.                                                could be smaller with
  1207.                                                its own vsnprintf.
  1208.  
  1209.  
  1210.                     615441                     rld does extra
  1211.                                                useless lookups,
  1212.                                                degrading
  1213.                                                performance.
  1214.  
  1215.  
  1216.                     620471                     An application that
  1217.                                                performs a dlopen
  1218.                                                experiences slow
  1219.                                                performance due to
  1220.                                                poor string compare
  1221.                                                code.
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.